import java.util.Comparator;
import java.util.PriorityQueue;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ZhongJinTao
 * Date: 2024-09-02
 * Time: 19:16
 */

/**
 * 1046. 最后一块石头的重量
 * https://leetcode.cn/problems/last-stone-weight/description/
 */

//自定义实现一个【比较器】
class IntCmp implements Comparator<Integer>{
    public int compare(Integer o1,Integer o2){
        return o2.compareTo(o1);
    }
}
class Solution2 {
    public int lastStoneWeight(int[] stones) {
        // PriorityQueue<Integer> q = new PriorityQueue<>(new IntCmp());
        PriorityQueue<Integer> q = new PriorityQueue<>((a, b) -> b - a);//lambda表达式
        //1、把所有的石头放进大根堆里面
        for(int x : stones) {
            q.offer(x);
        }
        //2、找出两个最大的石头进行碰撞
        while(q.size() >= 2) {
            int t1 = q.poll();
            int t2 = q.poll();

            if(t1 > t2) q.offer(t1 - t2);
        }
        //3、返回结果，要么没石头了，要么只有一个
        return q.isEmpty() ? 0 : q.poll();
    }
}